package com.zyl.pts.service;

import com.github.pagehelper.PageInfo;
import com.zyl.pts.config.enums.CodeAndMessageEnum;
import com.zyl.pts.domain.dto.AnimalDTO.AnimalUpdateOrAddDTO;
import com.zyl.pts.domain.vo.AnimalVO.BaseInfoAnimalPageVO;
import com.zyl.pts.domain.vo.AnimalVO.BaseInfoAnimalVO;

import java.util.List;

/**
 * @version v1.0
 * @ProjectName: product_source
 * @Package: com.zyl.pts.service
 * @ClassName: AnimalService
 * @Description TODO()
 * @Author 翟玉龙
 * @Date 2024/11/20-8:45
 */
public interface AnimalService {

    /**
     * 根据动物编号生成二维码
     * @param animalId 动物编号
     * @return {@link CodeAndMessageEnum }
     */
    CodeAndMessageEnum generateQRCode(String animalId);

    /**
     * 根据动物编号查询动物基本信息
     * @param animalId 动物编号
     * @return {@link BaseInfoAnimalVO }
     */
    BaseInfoAnimalVO queryAnimalInfoById(String animalId);

    /**
     * 分页并根据条件查询动物基本信息以及对应批次和栏圈
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @param aHealthy 健康状况
     * @param aGender 性别
     * @return {@link PageInfo }<{@link BaseInfoAnimalPageVO }>
     */
    PageInfo<BaseInfoAnimalPageVO> queryAnimalInfoPage(Integer pageNum, Integer pageSize, String aHealthy, String aGender);

    /**
     * 更新或者新增动物
     * @param animalUpdateOrAddDTO 动物信息
     * @return {@link CodeAndMessageEnum }
     */
    CodeAndMessageEnum updateOrInsertAnimal(AnimalUpdateOrAddDTO animalUpdateOrAddDTO);

    /**
     * 根据动物编号删除动物
     * @param animalId 动物编号
     * @return {@link CodeAndMessageEnum }
     */
    CodeAndMessageEnum deleteAnimalById(String animalId);

    /**
     * 根据动物编号列表删除动物
     * @param animalIdList 动物编号列表
     * @return {@link CodeAndMessageEnum }
     */
    CodeAndMessageEnum deleteAnimalByIdList(List<String> animalIdList);


}
